package com.luxsoft.siipap.cxc.ui.selectores;

import java.util.List;

import ca.odell.glazedlists.GlazedLists;
import ca.odell.glazedlists.gui.TableFormat;

import com.luxsoft.siipap.cxc.model.OrigenDeOperacion;
import com.luxsoft.siipap.service.ServiceLocator2;
import com.luxsoft.siipap.swing.dialog.AbstractSelector;
import com.luxsoft.siipap.util.DateUtil;
import com.luxsoft.siipap.ventas.model.Devolucion;

public class SelectorDeDevoluciones extends AbstractSelector<Devolucion>{
	
	private OrigenDeOperacion origen;
	
	public SelectorDeDevoluciones() {
		super(Devolucion.class, "Devoluciones (Pendientes de Nota)");
	}	

	@Override
	protected List<Devolucion> getData() {
		String hql3="from Devolucion d where " +
		" d.fecha>?" +
		" and d  not in(select nd.devolucion from NotaDeCreditoDevolucion nd)" +
		//" and d.venta =\'"+"8a8a8189-250313fb-0125-0315d9d9-0191"+"\'"+
		//" and d.id =\'"+"8a8a81ef-29a81521-0129-a8e5231b-0006"+"\'";
		" and d.venta.origen=\'"+getOrigen().name()+"\'";		
		return ServiceLocator2.getHibernateTemplate().find(hql3,DateUtil.toDate("28/02/2010"));
	}

	@Override
	protected TableFormat<Devolucion> getTableFormat() {
		String props[]={"numero","venta.sucursal.nombre","venta.nombre","fecha","venta.documento","venta.numeroFiscal","venta.origen","total","venta.descuentos","autorizada","venta.saldoCalculado"};
		String labels[]={"Folio","Sucursal","Cliente","Fecha","Factura","Fiscal","Origen","Importe","Descuentos","Autorizada","Saldo"};
		return GlazedLists.tableFormat(Devolucion.class,props,labels);
	}
	
	
	
	
	public OrigenDeOperacion getOrigen() {
		return origen;
	}

	public void setOrigen(OrigenDeOperacion origen) {
		this.origen = origen;
	}
	
	public static Devolucion seleccionar(OrigenDeOperacion origen){
		SelectorDeDevoluciones selector=new SelectorDeDevoluciones();
		selector.setOrigen(origen);
		selector.open();
		if(!selector.hasBeenCanceled()){
			return selector.getSelected();
		}
		return null;
	}

	/**
	 * Prueba local en el EDT
	 * 
	 * @param args
	 * 
	 */
	public static void main(String[] args) {
		javax.swing.SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				com.luxsoft.siipap.swing.utils.SWExtUIManager.setup();
				System.out.println(seleccionar(OrigenDeOperacion.CRE));
				System.exit(0);
			}

		});
	}

}
